Cloud computing service platforms have greatly enhanced the ability of software developers and organizations that develop software to acquire and manage computing resources. Cloud computing service platforms enable software developers to quickly and easily requisition processing, storage, and server resources in order to develop and deploy software-based services. For example, software development organizations can request specific configurations of processing, storage, and server resources from a cloud computing service platform and gain access nearly immediately to cloud-based virtual resources in accordance with the requested configurations.
Prior to the availability of cloud computing service platforms, when software development organizations and service providers needed computing resources for development and deployment of software services or applications, organizations would typically budget, plan, order, and physically install computing resources in physical locations owned or controlled by the software development organizations. The process of obtaining and deploying these resources could typically take several weeks or months to complete. Cloud computing service platforms have overcome many of these drawbacks by providing relatively inexpensive and substantially immediate access to whatever computing resources may be needed by software service providers. Accordingly, cloud service platform providers increase the capabilities and flexibility of software developers to develop and deploy software services.
However, in spite of the many advantages provided by cloud computing service platforms, cloud computing service platforms suffer from several drawbacks. For example, organizations that utilize cloud computing service platforms for development and deployment of complex software services often rely on multiple groups to each develop portions of software services or applications that will need to function together. As software developers attempt to combine their individual portions into a single functioning service, or into multiple cooperating services, many difficulties arise. Oftentimes, the various portions are initially incompatible with each other because they were not built using a single framework, configuration, or infrastructure. Large amounts of human and computing resources are utilized to make these various portions of developed software compatible with each other.
Additionally, security problems arise when combining individual portions of developed software into a single functioning service. Individuals or teams that develop particular portions of services or applications each test their own particular portions separately to ensure that the portions meet security standards. Yet when the applications are combined, there are often security problems associated with the fact that the various software services or portions of software services were not developed using a single configuration or infrastructure. Again, large amounts of human and computing resources are utilized to ensure that the combination of the various portions or services together meet security standards.
Furthermore, once complex services or combinations of services are developed, it is often extremely difficult to develop services or applications that are extensions to these initially developed services or applications. The same problems of troubleshooting compatibility and security arise in the extension of services or applications, thereby requiring large amounts of human and computing resources to ensure compatibility of various portions of services or combinations of services as well as the security of these portions of services or combinations of services.
What is needed is a method and system that provide a technical solution to the technical problem of providing a framework that facilitates the efficient development, combination, and extension of software development and deployment tools.